如果不知道 docker 和 docker compose 的朋友,可以回到一年前的文章
示範的程式碼:Jaffle Shop Demo Repo
jaffle_shop/
├── models/
│ ├── staging/
│ │ ├── schema.yml
│ │ ├── stg_customers.sql
│ │ ├── stg_orders.sql
│ │ └── stg_payments.sql
│ ├── marts/
│ │ ├── customers.sql
│ │ ├── orders.sql
│ │ └── schema.yml
├── seeds/
│ ├── raw_customers.csv
│ ├── raw_orders.csv
│ └── raw_payments.csv
├── docker-compose.yml
├── profiles.yml
└── dbt_project.yml
seeds/
:當中會存放在載入的靜態資料,檔案格式大多是 csv
,這部分的數據修改頻率較低。models/
:包含 staging 和 marts 的 SQL 檔。dbt_project.yml
: dbt 專案的設定檔。官方提供了兩個主要的層級:staging 層和 marts 層:
題外話 - 其他層:
- 有些在 staging 和 marts 層之間還有 Intermediate 層,負責進行更複雜的轉換,基本上除了 marts 層以外的其他層,都不是最終報表,但也可能因數據團隊的設計邏輯,會有類似多個 marts 層的概念,讓不同負責人員將資料串到 dashboard、google sheet、excel 或是其他 BI 工具,這邊範例只是官方提供的標準模板~
- 有些專案會有 utilities 層來輔助其他層,通常會放通用的邏輯,例如:處理日期維度的模型、標準化字串的函數、通用分類邏輯,命名會以
utils_
開頭。
git clone https://github.com/snhou/jaffle-shop-dbt-demo.git
cd jaffle-shop-dbt-demo
python3 -m venv dbt-venv
source venv/bin/activate
python3 -m pip install - upgrade pip
應該有發現 STEP1~5 昨天都有做過了~
python3 -m pip install -r requirements.txt
dbt-core==1.8.3
、dbt-postgres==1.8.2
,昨天示範的只有 dbt-core 和 init 完的基礎介紹,正常都會依照不同 database 安裝對應的 adaptersdocker-compose build
docker-compose up -d
container 啟動都沒問題的話,明天就會開始 dbt seed
、dbt run
、dbt debug
,並說明用途和細節,也會針對 docker-compose.yml 說明